let defaultConfig = require('tailwindcss/defaultConfig');
const colors = require('tailwindcss/colors');

// . => _    eg: 0.5 => 0_5
// / => __   eg: 1/5 => 1__5
// : => ___  eg: active:bg-white => active___bg-white
module.exports = {
  purge: [],
  presets: [],
  darkMode: false, // or 'media' or 'class'
  separator: "___", // 兼容小程序，将 : 替换成 ___
  theme: {
    // 兼容小程序，将默认配置里带 .和/ 清除
    screens: {
      sm: '1280rpx',
      md: '1536rpx',
      lg: '2048rpx',
      xl: '2560rpx',
      '2xl': '3072rpx',
    },
    colors: {
      primary: {
        DEFAULT: '#2A6757',
        '0_1': 'rgba(42, 103, 87, .1)',
        '0_2': 'rgba(42, 103, 87, .2)',
        '0_3': 'rgba(42, 103, 87, .3)',
        '0_4': 'rgba(42, 103, 87, .4)',
        '0_5': 'rgba(42, 103, 87, .5)',
        '0_6': 'rgba(42, 103, 87, .6)',
        '0_7': 'rgba(42, 103, 87, .7)',
        '0_8': 'rgba(42, 103, 87, .8)',
        '0_9': 'rgba(42, 103, 87, .9)',
      },
      transparent: 'transparent',
      current: 'currentColor',
      black: {
        DEFAULT: colors.black,
        '0_1': 'rgba(0, 0, 0, .1)',
        '0_2': 'rgba(0, 0, 0, .2)',
        '0_3': 'rgba(0, 0, 0, .3)',
        '0_4': 'rgba(0, 0, 0, .4)',
        '0_5': 'rgba(0, 0, 0, .5)',
        '0_6': 'rgba(0, 0, 0, .6)',
        '0_7': 'rgba(0, 0, 0, .7)',
        '0_8': 'rgba(0, 0, 0, .8)',
        '0_9': 'rgba(0, 0, 0, .9)',
        666: '#666',
        999: '#999'
      },
			white: {
				DEFAULT: colors.white,
				'0_1': 'rgba(255, 255, 255, .1)',
				'0_2': 'rgba(255, 255, 255, .2)',
				'0_3': 'rgba(255, 255, 255, .3)',
				'0_4': 'rgba(255, 255, 255, .4)',
				'0_5': 'rgba(255, 255, 255, .5)',
				'0_6': 'rgba(255, 255, 255, .6)',
				'0_7': 'rgba(255, 255, 255, .7)',
				'0_8': 'rgba(255, 255, 255, .8)',
				'0_9': 'rgba(255, 255, 255, .9)',
			},
      gray: {
        DEFAULT: colors.gray,
        100: '#f8f8f8',
        200: '#EAF0EE'
      },
      red: colors.red,
      yellow: colors.amber,
      green: colors.emerald,
      blue: colors.blue,
      indigo: colors.indigo,
      purple: colors.violet,
      pink: colors.pink,
    },
    spacing: {
      px: '2rpx',
      0: '0rpx',
      '0_5': '4rpx',
      1: '8rpx',
      '1_5': '12rpx',
      2: '16rpx',
      '2_5': '20rpx',
      '2_75': '22rpx',
      3: '24rpx',
      '3_5': '28rpx',
      '3_75': '30rpx',
      4: '32rpx',
      '4_5': '36rpx',
      5: '40rpx',
      '5_5': '44rpx',
      6: ' 48rpx',
      7: '56rpx',
      '7_25': '58rpx',
      8: '64rpx',
      9: '72rpx',
      10: '80rpx',
      11: '88rpx',
      12: '96rpx',
      14: '112rpx',
      16: '128rpx',
      20: '160rpx',
      24: '192rpx',
      28: '224rpx',
      32: '256rpx',
      36: '288rpx',
      40: '320rpx',
      44: '352rpx',
      48: '384rpx',
      52: '416rpx',
      56: '448rpx',
      60: '480rpx',
      64: '512rpx',
      72: '576rpx',
      80: '640rpx',
      96: '768rpx',
    },
    animation: {
      none: 'none',
      spin: 'spin 1s linear infinite',
      ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',
      pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
      bounce: 'bounce 1s infinite',
    },
    backgroundColor: (theme) => theme('colors'),
    backgroundImage: {
      none: 'none',
      'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',
      'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',
      'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',
      'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',
      'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',
      'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',
      'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',
      'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',
    },
    backgroundOpacity: (theme) => theme('opacity'),
    backgroundPosition: {
      bottom: 'bottom',
      center: 'center',
      left: 'left',
      'left-bottom': 'left bottom',
      'left-top': 'left top',
      right: 'right',
      'right-bottom': 'right bottom',
      'right-top': 'right top',
      top: 'top',
    },
    backgroundSize: {
      auto: 'auto',
      cover: 'cover',
      contain: 'contain',
    },
    borderColor: (theme) => ({
      ...theme('colors'),
      DEFAULT: theme('colors.gray.200', 'currentColor'),
    }),
    borderOpacity: (theme) => theme('opacity'),
    borderRadius: {
      none: '0rpx',
      sm: '4rpx',
      DEFAULT: '8rpx',
      md: '12rpx',
      lg: '16rpx',
      xl: '24rpx',
      '2xl': '32rpx',
      '3xl': '48rpx',
      full: '9999rpx',
    },
    borderWidth: {
      DEFAULT: '2rpx',
      0: '0rpx',
      2: '4rpx',
      4: '8rpx',
      8: '16rpx',
    },
    boxShadow: {
      sm: '0 2rpx 4rpx 0 rgba(0, 0, 0, 0.05)',
      DEFAULT: '0 2rpx 6rpx 0 rgba(0, 0, 0, 0.1), 0 2rpx 4rpx 0 rgba(0, 0, 0, 0.06)',
      md: '0 8rpx 12rpx -2rpx rgba(0, 0, 0, 0.1), 0 4rpx 8rpx -2rpx rgba(0, 0, 0, 0.06)',
      lg: '0 20rpx 30rpx -6rpx rgba(0, 0, 0, 0.1), 0 8rpx 12rpx -4rpx rgba(0, 0, 0, 0.05)',
      xl: '0 40rpx 50rpx -10rpx rgba(0, 0, 0, 0.1), 0 20rpx 20rpx -10rpx rgba(0, 0, 0, 0.04)',
      '2xl': '0 50rpx 100rpx -24rpx rgba(0, 0, 0, 0.25)',
      inner: 'inset 0 4rpx 8rpx 0 rgba(0, 0, 0, 0.06)',
      none: 'none',
    },
    container: {},
    cursor: {
      auto: 'auto',
      default: 'default',
      pointer: 'pointer',
      wait: 'wait',
      text: 'text',
      move: 'move',
      'not-allowed': 'not-allowed',
    },
    divideColor: (theme) => theme('borderColor'),
    divideOpacity: (theme) => theme('borderOpacity'),
    divideWidth: (theme) => theme('borderWidth'),
    fill: { current: 'currentColor' },
    flex: {
      1: '1 1 0%',
      '1_2': '1.2 1 0%',
      '1_3': '1.3 1 0%',
      '1_4': '1.4 1 0%',
      '1_5': '1.5 1 0%',
      auto: '1 1 auto',
      initial: '0 1 auto',
      none: 'none',
    },
    flexGrow: {
      0: '0',
      DEFAULT: '1',
    },
    flexShrink: {
      0: '0',
      DEFAULT: '1',
    },
    fontFamily: {
      sans: [
        'ui-sans-serif',
        'system-ui',
        '-apple-system',
        'BlinkMacSystemFont',
        '"Segoe UI"',
        'Roboto',
        '"Helvetica Neue"',
        'Arial',
        '"Noto Sans"',
        'sans-serif',
        '"Apple Color Emoji"',
        '"Segoe UI Emoji"',
        '"Segoe UI Symbol"',
        '"Noto Color Emoji"',
      ],
      serif: [ 'ui-serif', 'Georgia', 'Cambria', '"Times New Roman"', 'Times', 'serif' ],
      mono: [
        'ui-monospace',
        'SFMono-Regular',
        'Menlo',
        'Monaco',
        'Consolas',
        '"Liberation Mono"',
        '"Courier New"',
        'monospace',
      ],
    },
    fontSize: {
      xs: [ '24rpx', { lineHeight: '32rpx' } ],
      sm: [ '28rpx', { lineHeight: '40rpx' } ],
      '2sm': [ '30rpx', { lineHeight: '44rpx' } ],
      base: [ '32rpx', { lineHeight: '48rpx' } ],
      lg: [ '36rpx', { lineHeight: '56rpx' } ],
      xl: [ '40rpx', { lineHeight: '56rpx' } ],
      '2xl': [ '48rpx', { lineHeight: '64rpx' } ],
      '3xl': [ '60rpx', { lineHeight: '72rpx' } ],
      '4xl': [ '72rpx', { lineHeight: '80rpx' } ],
      '5xl': [ '96rpx', { lineHeight: '1' } ],
      '6xl': [ '120rpx', { lineHeight: '1' } ],
      '7xl': [ '144rpx', { lineHeight: '1' } ],
      '8xl': [ '192rpx', { lineHeight: '1' } ],
      '9xl': [ '256rpx', { lineHeight: '1' } ],
    },
    fontWeight: {
      thin: '100',
      extralight: '200',
      light: '300',
      normal: '400',
      medium: '500',
      semibold: '600',
      bold: '700',
      extrabold: '800',
      black: '900',
    },
    gap: (theme) => theme('spacing'),
    gradientColorStops: (theme) => theme('colors'),
    gridAutoColumns: {
      auto: 'auto',
      min: 'min-content',
      max: 'max-content',
      fr: 'minmax(0, 1fr)',
    },
    gridAutoRows: {
      auto: 'auto',
      min: 'min-content',
      max: 'max-content',
      fr: 'minmax(0, 1fr)',
    },
    gridColumn: {
      auto: 'auto',
      'span-1': 'span 1 / span 1',
      'span-2': 'span 2 / span 2',
      'span-3': 'span 3 / span 3',
      'span-4': 'span 4 / span 4',
      'span-5': 'span 5 / span 5',
      'span-6': 'span 6 / span 6',
      'span-7': 'span 7 / span 7',
      'span-8': 'span 8 / span 8',
      'span-9': 'span 9 / span 9',
      'span-10': 'span 10 / span 10',
      'span-11': 'span 11 / span 11',
      'span-12': 'span 12 / span 12',
      'span-full': '1 / -1',
    },
    gridColumnEnd: {
      auto: 'auto',
      1: '1',
      2: '2',
      3: '3',
      4: '4',
      5: '5',
      6: '6',
      7: '7',
      8: '8',
      9: '9',
      10: '10',
      11: '11',
      12: '12',
      13: '13',
    },
    gridColumnStart: {
      auto: 'auto',
      1: '1',
      2: '2',
      3: '3',
      4: '4',
      5: '5',
      6: '6',
      7: '7',
      8: '8',
      9: '9',
      10: '10',
      11: '11',
      12: '12',
      13: '13',
    },
    gridRow: {
      auto: 'auto',
      'span-1': 'span 1 / span 1',
      'span-2': 'span 2 / span 2',
      'span-3': 'span 3 / span 3',
      'span-4': 'span 4 / span 4',
      'span-5': 'span 5 / span 5',
      'span-6': 'span 6 / span 6',
      'span-full': '1 / -1',
    },
    gridRowStart: {
      auto: 'auto',
      1: '1',
      2: '2',
      3: '3',
      4: '4',
      5: '5',
      6: '6',
      7: '7',
    },
    gridRowEnd: {
      auto: 'auto',
      1: '1',
      2: '2',
      3: '3',
      4: '4',
      5: '5',
      6: '6',
      7: '7',
    },
    transformOrigin: {
      center: 'center',
      top: 'top',
      'top-right': 'top right',
      right: 'right',
      'bottom-right': 'bottom right',
      bottom: 'bottom',
      'bottom-left': 'bottom left',
      left: 'left',
      'top-left': 'top left',
    },
    gridTemplateColumns: {
      none: 'none',
      1: 'repeat(1, minmax(0, 1fr))',
      2: 'repeat(2, minmax(0, 1fr))',
      3: 'repeat(3, minmax(0, 1fr))',
      4: 'repeat(4, minmax(0, 1fr))',
      5: 'repeat(5, minmax(0, 1fr))',
      6: 'repeat(6, minmax(0, 1fr))',
      7: 'repeat(7, minmax(0, 1fr))',
      8: 'repeat(8, minmax(0, 1fr))',
      9: 'repeat(9, minmax(0, 1fr))',
      10: 'repeat(10, minmax(0, 1fr))',
      11: 'repeat(11, minmax(0, 1fr))',
      12: 'repeat(12, minmax(0, 1fr))',
    },
    gridTemplateRows: {
      none: 'none',
      1: 'repeat(1, minmax(0, 1fr))',
      2: 'repeat(2, minmax(0, 1fr))',
      3: 'repeat(3, minmax(0, 1fr))',
      4: 'repeat(4, minmax(0, 1fr))',
      5: 'repeat(5, minmax(0, 1fr))',
      6: 'repeat(6, minmax(0, 1fr))',
    },
    height: (theme) => ({
      auto: 'auto',
      ...theme('spacing'),
      '1__2': '50%',
      '1__3': '33.333333%',
      '2__3': '66.666667%',
      '1__4': '25%',
      '2__4': '50%',
      '3__4': '75%',
      '1__5': '20%',
      '2__5': '40%',
      '3__5': '60%',
      '4__5': '80%',
      '1__6': '16.666667%',
      '2__6': '33.333333%',
      '3__6': '50%',
      '4__6': '66.666667%',
      '5__6': '83.333333%',
      half: '50%',
      full: '100%',
      screen: '100vh',
    }),
    inset: (theme, { negative }) => ({
      auto: 'auto',
      ...theme('spacing'),
      ...negative(theme('spacing')),
      '1__2': '50%',
      '1__3': '33.333333%',
      '2__3': '66.666667%',
      '1__4': '25%',
      '2__4': '50%',
      '3__4': '75%',
      half: '50%',
      full: '100%',
      '-1__2': '-50%',
      '-1__3': '-33.333333%',
      '-2__3': '-66.666667%',
      '-1__4': '-25%',
      '-2__4': '-50%',
      '-3__4': '-75%',
      '-half': '-50%',
      '-full': '-100%',
    }),
    keyframes: {
      spin: {
        to: {
          transform: 'rotate(360deg)',
        },
      },
      ping: {
        '75%, 100%': {
          transform: 'scale(2)',
          opacity: '0',
        },
      },
      pulse: {
        '50%': {
          opacity: '.5',
        },
      },
      bounce: {
        '0%, 100%': {
          transform: 'translateY(-25%)',
          animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',
        },
        '50%': {
          transform: 'none',
          animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',
        },
      },
    },
    letterSpacing: {
      tighter: '-0.05em',
      tight: '-0.025em',
      normal: '0em',
      wide: '0.025em',
      wider: '0.05em',
      widest: '0.1em',
    },
    lineHeight: {
      none: '1',
      tight: '1.25',
      snug: '1.375',
      normal: '1.5',
      relaxed: '1.625',
      loose: '2',
      3: '24rpx',
      4: '32rpx',
      5: '40rpx',
      6: '48rpx',
      7: '56rpx',
      8: '64rpx',
      9: '72rpx',
      10: '80rpx',
      11: '88rpx',
    },
    listStyleType: {
      none: 'none',
      disc: 'disc',
      decimal: 'decimal',
    },
    margin: (theme, { negative }) => ({
      auto: 'auto',
      ...theme('spacing'),
      ...negative(theme('spacing')),
    }),
    maxHeight: (theme) => ({
      ...theme('spacing'),
      half: '50%',
      full: '100%',
      screen: '100vh',
    }),
    maxWidth: (theme, { breakpoints }) => ({
      none: 'none',
      0: '0rpx',
      xs: '640rpx',
      sm: '768rpx',
      md: '896rpx',
      lg: '1024rpx',
      xl: '1162rpx',
      '2xl': '1344rpx',
      '3xl': '1536rpx',
      '4xl': '1792rpx',
      '5xl': '2048rpx',
      '6xl': '1304rpx',
      '7xl': '1560rpx',
      half: '50%',
      full: '100%',
      min: 'min-content',
      max: 'max-content',
      prose: '65ch',
      ...breakpoints(theme('screens')),
    }),
    minHeight: {
      0: '0px',
      half: '50%',
      full: '100%',
      screen: '100vh',
    },
    minWidth: {
      0: '0px',
      half: '50%',
      full: '100%',
      min: 'min-content',
      max: 'max-content',
    },
    objectPosition: {
      bottom: 'bottom',
      center: 'center',
      left: 'left',
      'left-bottom': 'left bottom',
      'left-top': 'left top',
      right: 'right',
      'right-bottom': 'right bottom',
      'right-top': 'right top',
      top: 'top',
    },
    opacity: {
      0: '0',
      5: '0.05',
      10: '0.1',
      20: '0.2',
      25: '0.25',
      30: '0.3',
      40: '0.4',
      50: '0.5',
      60: '0.6',
      70: '0.7',
      75: '0.75',
      80: '0.8',
      90: '0.9',
      95: '0.95',
      100: '1',
    },
    order: {
      first: '-9999',
      last: '9999',
      none: '0',
      1: '1',
      2: '2',
      3: '3',
      4: '4',
      5: '5',
      6: '6',
      7: '7',
      8: '8',
      9: '9',
      10: '10',
      11: '11',
      12: '12',
    },
    outline: {
      none: [ '4rpx solid transparent', '4rpx' ],
      white: [ '4rpx dotted white', '4rpx' ],
      black: [ '4rpx dotted black', '4rpx' ],
    },
    padding: (theme) => theme('spacing'),
    placeholderColor: (theme) => theme('colors'),
    placeholderOpacity: (theme) => theme('opacity'),
    ringColor: (theme) => ({
      DEFAULT: theme('colors.blue.500', '#3b82f6'),
      ...theme('colors'),
    }),
    ringOffsetColor: (theme) => theme('colors'),
    ringOffsetWidth: {
      0: '0rpx',
      1: '2rpx',
      2: '4rpx',
      4: '8rpx',
      8: '16rpx',
    },
    ringOpacity: (theme) => ({
      DEFAULT: '0.5',
      ...theme('opacity'),
    }),
    ringWidth: {
      DEFAULT: '6rpx',
      0: '0rpx',
      1: '2rpx',
      2: '4rpx',
      4: '8rpx',
      8: '16rpx',
    },
    rotate: {
      '-180': '-180deg',
      '-90': '-90deg',
      '-45': '-45deg',
      '-12': '-12deg',
      '-6': '-6deg',
      '-3': '-3deg',
      '-2': '-2deg',
      '-1': '-1deg',
      0: '0deg',
      1: '1deg',
      2: '2deg',
      3: '3deg',
      6: '6deg',
      12: '12deg',
      45: '45deg',
      90: '90deg',
      180: '180deg',
    },
    scale: {
      0: '0',
      50: '.5',
      75: '.75',
      90: '.9',
      95: '.95',
      100: '1',
      105: '1.05',
      110: '1.1',
      125: '1.25',
      150: '1.5',
    },
    skew: {
      '-12': '-12deg',
      '-6': '-6deg',
      '-3': '-3deg',
      '-2': '-2deg',
      '-1': '-1deg',
      0: '0deg',
      1: '1deg',
      2: '2deg',
      3: '3deg',
      6: '6deg',
      12: '12deg',
    },
    space: (theme, { negative }) => ({
      ...theme('spacing'),
      ...negative(theme('spacing')),
    }),
    stroke: {
      current: 'currentColor',
    },
    strokeWidth: {
      0: '0',
      1: '1',
      2: '2',
    },
    textColor: (theme) => theme('colors'),
    textOpacity: (theme) => theme('opacity'),
    transitionDuration: {
      DEFAULT: '150ms',
      75: '75ms',
      100: '100ms',
      150: '150ms',
      200: '200ms',
      300: '300ms',
      500: '500ms',
      700: '700ms',
      1000: '1000ms',
    },
    transitionDelay: {
      75: '75ms',
      100: '100ms',
      150: '150ms',
      200: '200ms',
      300: '300ms',
      500: '500ms',
      700: '700ms',
      1000: '1000ms',
    },
    transitionProperty: {
      none: 'none',
      all: 'all',
      DEFAULT: 'background-color, border-color, color, fill, stroke, opacity, box-shadow, transform',
      colors: 'background-color, border-color, color, fill, stroke',
      opacity: 'opacity',
      shadow: 'box-shadow',
      transform: 'transform',
    },
    transitionTimingFunction: {
      DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',
      linear: 'linear',
      in: 'cubic-bezier(0.4, 0, 1, 1)',
      out: 'cubic-bezier(0, 0, 0.2, 1)',
      'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
    },
    translate: (theme, { negative }) => ({
      ...theme('spacing'),
      ...negative(theme('spacing')),
      '1__2': '50%',
      '1__3': '33.333333%',
      '2__3': '66.666667%',
      '1__4': '25%',
      '2__4': '50%',
      '3__4': '75%',
      half: '50%',
      full: '100%',
      '-1__2': '-50%',
      '-1__3': '-33.333333%',
      '-2__3': '-66.666667%',
      '-1__4': '-25%',
      '-2__4': '-50%',
      '-3__4': '-75%',
      '-half': '-50%',
      '-full': '-100%',
    }),
    width: (theme) => ({
      auto: 'auto',
      ...theme('spacing'),
      '1__2': '50%',
      '1__3': '33.333333%',
      '2__3': '66.666667%',
      '1__4': '25%',
      '2__4': '50%',
      '3__4': '75%',
      '1__5': '20%',
      '2__5': '40%',
      '3__5': '60%',
      '4__5': '80%',
      '1__6': '16.666667%',
      '2__6': '33.333333%',
      '3__6': '50%',
      '4__6': '66.666667%',
      '5__6': '83.333333%',
      '1__12': '8.333333%',
      '2__12': '16.666667%',
      '3__12': '25%',
      '4__12': '33.333333%',
      '5__12': '41.666667%',
      '6__12': '50%',
      '7__12': '58.333333%',
      '8__12': '66.666667%',
      '9__12': '75%',
      '10__12': '83.333333%',
      '11__12': '91.666667%',
      half: '50%',
      full: '100%',
      screen: '100vw',
      min: 'min-content',
      max: 'max-content',
    }),
  },
  plugins: [],
  corePlugins: {
    // 兼容小程序，将带有 * 选择器的插件禁用
    preflight: false,
    space: false,
    divideColor: false,
    divideOpacity: false,
    divideStyle: false,
    divideWidth: false
  },
  variantOrder: [
    'first',
    'last',
    'odd',
    'even',
    'visited',
    'checked',
    'group-hover',
    'group-focus',
    'focus-within',
    'hover',
    'focus',
    'focus-visible',
    'active',
    'disabled',
  ],
  variants: {
    accessibility: ['responsive', 'focus-within', 'focus'],
    alignContent: ['responsive'],
    alignItems: ['responsive'],
    alignSelf: ['responsive'],
    animation: ['responsive'],
    appearance: ['responsive'],
    backgroundAttachment: ['responsive'],
    backgroundClip: ['responsive'],
    backgroundColor: ['responsive', 'dark', 'group-hover', 'focus-within', 'hover', 'focus'],
    backgroundImage: ['responsive'],
    backgroundOpacity: ['responsive', 'group-hover', 'focus-within', 'hover', 'focus'],
    backgroundPosition: ['responsive'],
    backgroundRepeat: ['responsive'],
    backgroundSize: ['responsive'],
    borderCollapse: ['responsive'],
    borderColor: ['responsive', 'dark', 'group-hover', 'focus-within', 'hover', 'focus'],
    borderOpacity: ['responsive', 'group-hover', 'focus-within', 'hover', 'focus'],
    borderRadius: ['responsive'],
    borderStyle: ['responsive'],
    borderWidth: ['responsive'],
    boxShadow: ['responsive', 'group-hover', 'focus-within', 'hover', 'focus'],
    boxSizing: ['responsive'],
    clear: ['responsive'],
    container: ['responsive'],
    cursor: ['responsive'],
    display: ['responsive'],
    divideColor: ['responsive', 'dark'],
    divideOpacity: ['responsive'],
    divideStyle: ['responsive'],
    divideWidth: ['responsive'],
    fill: ['responsive'],
    flex: ['responsive'],
    flexDirection: ['responsive'],
    flexGrow: ['responsive'],
    flexShrink: ['responsive'],
    flexWrap: ['responsive'],
    float: ['responsive'],
    fontFamily: ['responsive'],
    fontSize: ['responsive'],
    fontSmoothing: ['responsive'],
    fontStyle: ['responsive'],
    fontVariantNumeric: ['responsive'],
    fontWeight: ['responsive'],
    gap: ['responsive'],
    gradientColorStops: ['responsive', 'dark', 'hover', 'focus'],
    gridAutoColumns: ['responsive'],
    gridAutoFlow: ['responsive'],
    gridAutoRows: ['responsive'],
    gridColumn: ['responsive'],
    gridColumnEnd: ['responsive'],
    gridColumnStart: ['responsive'],
    gridRow: ['responsive'],
    gridRowEnd: ['responsive'],
    gridRowStart: ['responsive'],
    gridTemplateColumns: ['responsive'],
    gridTemplateRows: ['responsive'],
    height: ['responsive'],
    inset: ['responsive'],
    justifyContent: ['responsive'],
    justifyItems: ['responsive'],
    justifySelf: ['responsive'],
    letterSpacing: ['responsive'],
    lineHeight: ['responsive'],
    listStylePosition: ['responsive'],
    listStyleType: ['responsive'],
    margin: ['responsive', 'last'],
    maxHeight: ['responsive'],
    maxWidth: ['responsive'],
    minHeight: ['responsive'],
    minWidth: ['responsive'],
    objectFit: ['responsive'],
    objectPosition: ['responsive'],
    opacity: ['responsive', 'group-hover', 'focus-within', 'hover', 'focus', 'active'],
    order: ['responsive'],
    outline: ['responsive', 'focus-within', 'focus'],
    overflow: ['responsive'],
    overscrollBehavior: ['responsive'],
    padding: ['responsive'],
    placeContent: ['responsive'],
    placeItems: ['responsive'],
    placeSelf: ['responsive'],
    placeholderColor: ['responsive', 'dark', 'focus'],
    placeholderOpacity: ['responsive', 'focus'],
    pointerEvents: ['responsive'],
    position: ['responsive'],
    resize: ['responsive'],
    ringColor: ['responsive', 'dark', 'focus-within', 'focus'],
    ringOffsetColor: ['responsive', 'dark', 'focus-within', 'focus'],
    ringOffsetWidth: ['responsive', 'focus-within', 'focus'],
    ringOpacity: ['responsive', 'focus-within', 'focus'],
    ringWidth: ['responsive', 'focus-within', 'focus'],
    rotate: ['responsive', 'hover', 'focus'],
    scale: ['responsive', 'hover', 'focus'],
    skew: ['responsive', 'hover', 'focus'],
    space: ['responsive'],
    stroke: ['responsive'],
    strokeWidth: ['responsive'],
    tableLayout: ['responsive'],
    textAlign: ['responsive'],
    textColor: ['responsive', 'dark', 'group-hover', 'focus-within', 'hover', 'focus'],
    textDecoration: ['responsive', 'group-hover', 'focus-within', 'hover', 'focus'],
    textOpacity: ['responsive', 'group-hover', 'focus-within', 'hover', 'focus'],
    textOverflow: ['responsive'],
    textTransform: ['responsive'],
    transform: ['responsive'],
    transformOrigin: ['responsive'],
    transitionDelay: ['responsive'],
    transitionDuration: ['responsive'],
    transitionProperty: ['responsive'],
    transitionTimingFunction: ['responsive'],
    translate: ['responsive', 'hover', 'focus'],
    userSelect: ['responsive'],
    verticalAlign: ['responsive'],
    visibility: ['responsive'],
    whitespace: ['responsive'],
    width: ['responsive'],
    wordBreak: ['responsive'],
    zIndex: ['responsive', 'focus-within', 'focus'],
  },
};


function prefix(p) {
  if (typeof p === 'function') {
    return (...arg) => {
      const r = p(...arg);
      return prefixObj(r);
    };
  } else {
    return prefixObj(p);
  }

  function prefixObj(o) {
    let r = {};
    Object.keys(o).forEach(key => {
      const k = (('0123456789'.includes(o[ key ][ 0 ])) ? "_" : '') + key;
      r[ k ] = o[ key ];
    });
  }
}